package com.wutao.panzh.admin.content.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.github.pagehelper.PageInfo;
import com.panzh.UtilEntity.ResultVO;
import com.panzh.entity.DispalySku;
import com.panzh.entity.HotelItemSku;
import com.panzh.myconst.CommonConst;
import com.panzh.myconst.ProjectParames;
import com.wutao.panzh.service.HotelSkuService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

@Controller
public class HotelSkuController {

    @Reference
    private HotelSkuService hotelSkuService;

    @RequestMapping("/sava/hotel/item/sku")
    @ResponseBody
    public ResultVO savaHotelItemSku(@RequestParam("spuId") String spuId,
                                     @RequestParam("skuName") String skuName,
                                     @RequestParam("skuCast") String skuCast,
                                     @RequestParam(value = "attrList", required = false) String[] attrList,
                                     @RequestParam(value = "attrNums", required = false) String[] attrNums) {

//        HotelItemSku hotelItemSku = new HotelItemSku();
//        hotelItemSku.setHoteName(skuName);
//        hotelItemSku.setHotelCost(skuCast);
//        hotelItemSku.setHotelItemSpuId(Integer.parseInt(spuId));
//
//        //这一步看不懂？看不懂就对了！
//        for (int i = 1 ; i < attrList.length ; i++){
//            HotelSaleAttrValue hotelSaleAttrValue = new HotelSaleAttrValue();
//            hotelSaleAttrValue.setHotelSaleAttrId(i);
//            hotelSaleAttrValue.setId(Integer.parseInt(attrList[i]));
//
//            HotelSaleAttr hotelSaleAttr = new HotelSaleAttr();
//            hotelSaleAttr.setId(i);
//            ArrayList<HotelSaleAttrValue> hotelSaleAttrValues = new ArrayList<>();
//            hotelSaleAttrValues.add(hotelSaleAttrValue);
//            hotelSaleAttr.setHotelSaleAttrValues(hotelSaleAttrValues);
//
//            List<HotelSaleAttr> hotelSaleAttrs = hotelItemSku.getHotelSaleAttrs();
//            hotelSaleAttrs.add(hotelSaleAttr);
//            hotelItemSku.setHotelSaleAttrs(hotelSaleAttrs);
//        }
//
//        HotelSaleAttr hotelSaleAttr = new HotelSaleAttr();
//        List<HotelSaleAttrValue> values = new ArrayList<>();
//        for (String attrNum : attrNums) {
//            HotelSaleAttrValue hotelSaleAttrValue = new HotelSaleAttrValue();
//            hotelSaleAttrValue.setHotelSaleAttrValue(attrNum);
//            values.add(hotelSaleAttrValue);
//        }
//        hotelSaleAttr.setHotelSaleAttrValues(values);
//        List<HotelSaleAttr> hotelSaleAttrs = hotelItemSku.getHotelSaleAttrs();
//        hotelSaleAttrs.add(hotelSaleAttr);
//        hotelItemSku.setHotelSaleAttrs(hotelSaleAttrs);

        //我们不封装了，我们自己写。；
        //先去查一下有没有相同spu下面同名的sku;
        List<HotelItemSku> hotelItemSkus = hotelSkuService.selectHotelSkuBySpuIdAndSkuName(spuId, skuName);

        if (hotelItemSkus.size() > 0) {
            return new ResultVO<String>(ResultVO.FAILED, CommonConst.INFORMATION_DOES_NOT_EXIST, ResultVO.NO_DATA);
        }

        HotelItemSku hotelItemSku = new HotelItemSku();
        hotelItemSku.setHotelName(skuName);
        hotelItemSku.setHotalCost(skuCast);
        hotelItemSku.setHotelItemSpuId(Integer.parseInt(spuId));
        //基础属性封装完毕；

        //封装属性和属性值；单值属性：
        HashMap<Integer, Integer> saleAttrIdAndSaleAttrValueId = new HashMap<>();
        for (int i = 1; i < attrList.length; i++) {
            saleAttrIdAndSaleAttrValueId.put(i, Integer.parseInt(attrList[i]));
        }

        //多值属性直接转换成字符串；
        ArrayList<String> saleAttrNums = new ArrayList<>();
        if (attrNums != null) {
            for (String attrNum : attrNums) {
                saleAttrNums.add(attrNum);
            }
        }

        try {
            hotelSkuService.saveHotelItemSku(hotelItemSku, saleAttrIdAndSaleAttrValueId, saleAttrNums);
        } catch (Exception e) {
            return new ResultVO<String>(ResultVO.FAILED, CommonConst.DATA_SAVING_FAILED, ResultVO.NO_DATA);
        }

        return new ResultVO<String>(ResultVO.SUCCESS, CommonConst.INFORMATION_UPDATED_SUCCESSFULLY, ResultVO.NO_DATA);
    }

    /**
     * 获得所有展示的dispalySku；
     *
     * @return
     */
    @RequestMapping("/get/dispaly/hotel/sku/page")
    @ResponseBody
    public ResultVO<List<DispalySku>> getDispalyHotelSkuPage() {

        List<DispalySku> dispalyHotelSkuPage = hotelSkuService.getDispalyHotelSkuPage();
        return new ResultVO<List<DispalySku>>(ResultVO.SUCCESS, ResultVO.NO_MSG, dispalyHotelSkuPage);
    }

//    delete/hotel/item/sku
    @RequestMapping("/delete/hotel/item/sku")
    @ResponseBody
    public ResultVO<String> deleteHotelItemSku(@RequestParam("hotelItemId") String hotelItemId) {
        try {
            hotelSkuService.deleteHotelItemSku(hotelItemId);
        } catch (Exception e) {
            return new ResultVO<String>(ResultVO.FAILED, CommonConst.DELETE_INFORMATION_EXCEPTION, ResultVO.NO_DATA);
        }
        return new ResultVO<>(ResultVO.SUCCESS,CommonConst.DELETE_INFORMATION_SUCCESS,ResultVO.NO_DATA);
    }
}
